<?php
/**
 * Representa a un mp3
 *
 * @author del Valle, Federico <quaidy@gmail.com>
 */
class mp3 extends archivo{
 
  private $getid3;
  private $metadatos = null;

  
  public function __construct($ruta) {
    $this->ruta = $ruta;
    $this->getid3 = new getid3();
    $this->get_metadatos();
  }

  /**
   * Devuelve todo el array de metadatos que tenga el mp3
   * 
   * @return array
   */
  public function get_metadatos() {
    if ($this->metadatos == null) {
      $this->metadatos = $this->getid3->analyze($this->ruta);
      return $this->metadatos;
    } else {
      return $this->metadatos;
    }
  }

  

  /**
   * Corta el mp3
   * 
   * @param int $segundo Segundo a partir del cual se va a cortar el mp3
   * @param int $cantidad_segundos duracion del corte
   * @param string $ruta_guardado ruta real a donde se va a guardar el corte
   * @return string porcion del mp3 o true (sie s q se lo guarda en una ruta)
   */
  public function cortar($segundo,$cantidad_segundos,$ruta_guardado="") {
    //calculamos en q byte comienza
    $bitrate = $this->metadatos["audio"]["bitrate"]/1000;
    $incio_corte = (($bitrate * 1024 / 8) * $segundo) + $this->metadatos["avdataoffset"];
    $tamaño_de_corte = ($bitrate * 1024 / 8) * $cantidad_segundos;
    if ($ruta_guardado != "" ) {

      new archivo($ruta_guardado,$this->get_contenido($incio_corte, $tamaño_de_corte));
      return true;
    } else {
      return $this->get_contenido($incio_corte, $tamaño_de_corte);
    }
  }


  //TODO: implementar esto
  public function set_id3($array,$version ="2") {
    
  }

  public function get_contenido($inicio_corte = null, $tamaño_de_corte = null) {
    return parent::get_contenido($inicio_corte, $tamaño_de_corte);
  }

  /**
   * Devuelve el id3
   *
   * @param int $version version del id3 (1 o 2)
   * @return array
   */
  public function get_id3($version = 2) {
    //TODO ver el tema del array si ponerlo en un atributo privado

    $id3 = array("titulo" => "",
                 "artista" => "",
                 "album" => "",
                 "anio" => "",
                 "genero" => "");
    if (!empty($this->metadatos)) {
      if (!empty($this->metadatos['tags']["id3v".$version])) {
        $datos = $this->metadatos['tags']["id3v".$version];
        $id3["titulo"] = $datos["title"];
        $id3["artista"] = $datos["artist"];
        $id3["genero"] = $datos["genre"];
        $id3["anio"] = $datos["year"];
        $id3["album"] = $datos["album"];

      } 
    } 
    return $id3;
  }
}
?>
